﻿using System;

namespace USU.MetricsMonitor.LogParser
{
    /// <summary>
    /// Информация о действии
    /// </summary>
    public class ActionInfo : IEquatable<ActionInfo>
    {
        /// <summary>
        /// Сущность действий
        /// </summary>
        public Kind Kind
        {
            get;
            private set;
        }

        /// <summary>
        /// Тип действия
        /// </summary>
        public Action Action
        {
            get;
            private set;
        }

        /// <summary>
        /// Путь
        /// </summary>
        public string Path
        {
            get;
            private set;
        }

        /// <summary>
        /// Создание информации об одном действии
        /// </summary>
        /// <param name="kind">сущность действия</param>
        /// <param name="action">тип действия</param>
        /// <param name="path">путь</param>
        public ActionInfo(Kind kind, Action action, string path)
        {
            Kind = kind;
            Action = action;
            Path = path;
        }

        /// <summary>
        /// Метод должен использоваться только в тестовых целях!!!
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return String.Format("{0} {1}", Action, Path);
        }


        /// <summary>
        /// Метод должен использоваться только в тестовых целях!!!
        /// </summary>
        /// <param name="otherAction"></param>
        /// <returns></returns>
        public bool Equals(ActionInfo otherAction)
        {
            return  (
                        (Action == otherAction.Action) &&
                        (Path.CompareTo(otherAction.Path) == 0)
                    );
        }
    }
}